Git Reset என்ன செய்கிறது?
git reset கட்டளை உங்கள் தற்போதைய கிளையை (HEAD) வேறு ஒரு கமிட்டுக்கு நகர்த்துகிறது.
விருப்பத்தைப் பொறுத்து, எந்த மாற்றங்கள் staged ஆக இருக்கின்றன என்பதை மாற்றலாம் அல்லது உங்கள் வேலை அடைவிலிருந்து மாற்றங்களை நீக்கலாம்.
கமிட்டுகளை இரத்து செய்ய, கோப்புகளை unstage செய்ய அல்லது உங்கள் வரலாற்றை சுத்தம் செய்ய இதைப் பயன்படுத்தவும்.
Git Reset கட்டளைகள் மற்றும் விருப்பங்களின் சுருக்கம்
git reset --soft <commit>
HEAD-ஐ கமிட்டுக்கு நகர்த்தவும், மாற்றங்களை staged-ஆக வைக்கவும்
git reset --mixed <commit>
HEAD-ஐ கமிட்டுக்கு நகர்த்தவும், மாற்றங்களை unstage செய்யவும் (இயல்புநிலை)
git reset --hard <commit>
HEAD-ஐ கமிட்டுக்கு நகர்த்தவும், அனைத்து மாற்றங்களையும் நிராகரிக்கவும்
git reset <file>
ஒரு கோப்பை unstage செய்யவும்
git log --oneline
கமிட் வரலாற்றைக் காட்டு
மீண்டும் அமைக்க வேண்டிய கமிட்டைக் கண்டுபிடிப்பது எப்படி
முதலில், நீங்கள் திரும்பிச் செல்ல விரும்பும் கமிட்டைக் கண்டுபிடிக்க வேண்டும்.
உங்கள் கமிட் வரலாற்றின் சுருக்கத்தைப் பார்க்க git log --oneline பயன்படுத்தவும்:
முந்தைய அத்தியாயத்திற்குப் பிறகு, நாங்கள் திரும்பிச் செல்லக்கூடிய எங்கள் கமிட் வரலாற்றில் ஒரு பகுதி உள்ளது.
அதை reset-உடன் முயற்சிப்போம்.
முதலில், நாம் திரும்ப விரும்பும் புள்ளியைக் கண்டுபிடிக்க வேண்டும்.
அதைச் செய்ய, நாம் லாக் வழியாக செல்ல வேண்டும்.
மிக நீண்ட லாக் பட்டியலைத் தவிர்க்க, நாங்கள் --oneline விருப்பத்தைப் பயன்படுத்தப் போகிறோம், இது கமிட்டிற்கு ஒரு வரியை மட்டுமே காட்டுகிறது:
- கமிட் ஹாஷின் முதல் ஏழு எழுத்துக்கள் - இதைத்தான் நமது reset கட்டளையில் குறிப்பிட வேண்டும்.
- கமிட் செய்தி
எனவே நாம் reset செய்ய விரும்பும் புள்ளியைக் கண்டுபிடிப்போம்:
உதாரணம்
git log --oneline
e56ba1f (HEAD -> master) Revert "Just a regular update, definitely no accidents here..."
52418f7 Just a regular update, definitely no accidents here...
9a9add8 (origin/master) Added .gitignore
81912ba Corrected spelling error
3fdaa5b Merge pull request #1 from jassifteam-test/update-readme
836e5bf (origin/update-readme, update-readme) Updated readme for GitHub Branches
daf4f7c (origin/html-skeleton, html-skeleton) Updated index.html with basic meta
facaeae (gh-page/master) Merge branch 'master' of https://github.com/jassifteam-test/hello-world
e7de78f Updated index.html. Resized image
5a04b6f Updated README.md with a line about focus
d29d69f Updated README.md with a line about GitHub
e0b6038 merged with hello-world-images after fixing conflicts
1f1584e added new image
dfa79db updated index.html with emergency fix
0312c55 Added image to Hello World
09f4acd Updated index.html with a new line
221ec6e First release of Hello World!
நாங்கள் கமிட்டுக்குத் திரும்ப விரும்புகிறோம்: 9a9add8 (origin/master) Added .gitignore, விஷயங்களைக் குழப்பத் தொடங்குவதற்கு முன் கடைசியாக.
Git Reset --soft
git reset --soft <commit> HEAD-ஐ குறிப்பிட்ட கமிட்டுக்கு நகர்த்துகிறது, ஆனால் உங்கள் அனைத்து மாற்றங்களையும் staged ஆக வைக்கிறது (index-ல்).
பல கமிட்டுகளை ஒன்றாக இணைக்க விரும்பினால் அல்லது வரலாற்றை மீண்டும் எழுத விரும்பினால், ஆனால் உங்கள் வேலையை கமிட் செய்ய தயாராக வைக்க விரும்பினால் இது பயனுள்ளதாக இருக்கும்.
உதாரணம்
git reset --soft 9a9add8
9a9add8க்குப் பிறகு அனைத்து மாற்றங்களும் இப்போது staged ஆக உள்ளன, புதிய கமிட்டிற்கு தயாராக உள்ளன.
Git Reset --mixed (இயல்புநிலை)
git reset --mixed <commit> (அல்லது வெறும் git reset <commit>) HEAD-ஐ குறிப்பிட்ட கமிட்டுக்கு நகர்த்துகிறது மற்றும் எந்த மாற்றங்களையும் unstage செய்கிறது, ஆனால் அவற்றை உங்கள் வேலை அடைவில் வைக்கிறது.
இது இயல்புநிலை விருப்பம் மற்றும் ஒரு கமிட்டை "இரத்து" செய்ய விரும்பினால், ஆனால் திருத்தம் அல்லது மீண்டும் கமிட் செய்வதற்கு உங்கள் மாற்றங்களை வைத்திருக்க விரும்பினால் பயனுள்ளதாக இருக்கும்.
உதாரணம்
git reset --mixed 9a9add8
9a9add8க்குப் பிறகு அனைத்து மாற்றங்களும் இப்போது unstage ஆக உள்ளன, ஆனால் இன்னும் உங்கள் கோப்புகளில் உள்ளன.
Git Reset --hard
git reset --hard <commit> HEAD-ஐ குறிப்பிட்ட கமிட்டுக்கு நகர்த்துகிறது மற்றும் உங்கள் வேலை அடைவு மற்றும் staged மாற்றங்கள் அனைத்தையும் நிராகரிக்கிறது.
இது ஆபத்தானது மற்றும் நீங்கள் உறுதியாக இழக்க விரும்பும் அனைத்து மாற்றங்களையும் நிரந்தரமாக நீக்குகிறது.
உதாரணம்
git reset --hard 9a9add8
9a9add8க்குப் பிறகு அனைத்து மாற்றங்களும் இப்போது நிரந்தரமாக நீக்கப்பட்டுள்ளன.
மாற்றங்களை மதிப்பாய்வு செய்யவும்
Git Reset இயக்கிய பிறகு, எல்லாம் எதிர்பார்த்ததுபோல் உள்ளதா என்பதை உறுதிப்படுத்த உங்கள் மாற்றங்களை மதிப்பாய்வு செய்யவும்.
உதாரணம்
git status
On branch master
Your branch is behind 'origin/master' by 2 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
nothing to commit, working tree clean
உதவிக்குறிப்புகள் & சிறந்த நடைமுறைகள்
கவனத்துடன் பயன்படுத்தவும்
Git Reset-ஐ கவனத்துடன் பயன்படுத்தவும், ஏனெனில் இது உங்கள் கமிட் வரலாற்றை மீண்டும் எழுதும்.
குழுவுடன் தொடர்பு கொள்ளவும்
ரிமோட் களஞ்சியத்தில் மாற்றங்களைச் செய்வதற்கு முன் உங்கள் குழுவுடன் தொடர்பு கொள்ளுங்கள்.
ரிமோட்டில் தள்ள வேண்டாம்
ரிமோட் களஞ்சியத்தில் ஏற்கனவே பகிரப்பட்ட கமிட்டுகளை reset செய்த பிறகு தள்ள வேண்டாம்.
--hard-ஐ தவிர்க்கவும்
சாத்தியமுள்ள时就 --hard reset-ஐத் தவிர்க்கவும், ஏனெனில் இது மாற்றங்களை நிரந்தரமாக நீக்கும்.
எச்சரிக்கைகள்
முக்கியமான எச்சரிக்கை
Git Reset-ஐ பயன்படுத்தும் போது கவனமாக இருங்கள், ஏனெனில் இது மாற்றங்களை நீக்கலாம் மற்றும் உங்கள் கமிட் வரலாற்றை மீண்டும் எழுதலாம்.
அவசியமான போது மட்டுமே இதைப் பயன்படுத்துவதை உறுதிப்படுத்திக் கொள்ளுங்கள்.
விரைவு குறிப்பு
--soft
மாற்றங்களை staged-ஆக வைக்கவும்
git reset --soft
--mixed
மாற்றங்களை unstage செய்யவும்
git reset --mixed
--hard
அனைத்து மாற்றங்களையும் நிராகரிக்கவும்
git reset --hard
கமிட் வரலாறு
கமிட்களைப் பாருங்கள்
git log --oneline